/**
 * 订阅发布模式（又称观察者模式）定义了一种一对多的关系，
 * 让多个观察者同时监听某一个主题对象，这个主题对象的状态发生改变时就会通知所有观察者对象。
 */

 //发布者，负责通知主题的更新
 let pub = {
     publish(){
         dep.notify();
     }
 }
 //三个订阅者，每次订阅的主题发生变化都会引起更新操作
 let sub1 = {update(){console.log("1")}}
 let sub2 = {update(){console.log("2")}}
 let sub3 = {update(){console.log("3")}}
 
 //主题对象
 function Dep(){
     this.subs = [sub1,sub2,sub3];
 }
//主题对象的原型上定义通知事件，在其中触发所有订阅对象的更新操作
 Dep.prototype.notify = function(){
     this.subs.forEach(item=>{
         item.update();
     })
 }
 let dep = new Dep();
 pub.publish();